             VB/ISAM(tm)for Windows  April 1996
* Ultra-compact. The DLLs, even for the 32-Bit
  multi-user network version, are under 61 KB!
  If you plan to deliver your application
  electronically, SIZE COUNTS!

* Blazing performance. In tests run in December
  1993, it outperformed MS-Access by factors of
  up to 24 to 1. If you're processing a lot of
  data, or running on smaller, slower machines,
  SPEED COUNTS!

* Simple interface. The user manual is 60 pages
  long, and most applications use only half of
  the 16 functions.  A clean alternative to over
  engineered database management software.
  RAPID DEVELOPMENT COUNTS!

* Ultimate reliability. Reliable as an anvil in
  thousands of critical corporate applications
  and successful commercial software products.
  Some files are hundreds of megabytes in size
  and accessed by hundreds of users
  simultaneously. RELIABILITY COUNTS!

* High capacity. VB/ISAM can fill a single
  dataset up to 512 MB in size, and using
  multiple dataset structures, VB/ISAM can
  access a total database virtually unlimited
  in size. We have developed such huge databases
  for customers under contract, so we know it can
  be done. CAPACITY COUNTS!

* Outrageous flexibility.  With external
  connectivity, objects such as video, sound,
  picture, or any other type of large objects you
  can dream up can be accessed. We have developed
  such databases for customers under contract, so
  we know it can be done. FLEXIBILITY COUNTS!

  CALL US FOR A COMPANY PROFILE.
  WE DO PROFESSIONAL CONTRACT WORK.

FEATURES:
* Up to 80 indexes, stored in the same DOS file as
  the data records.
* Index sort-order and file space automatically
  maintained with every add/change/delete.
* Variable-length fields and records to 32 KB; files
  to 512 MB.
* Both single-user (VB/ISAM MX) and
  multi-user/network (VB/ISAM MU) versions
  available; MU version includes semaphores for
  record locking, runs on any network, and
  automatically releases locks if a process dies.
* File-compatible MX and MU versions for VB/Win,
  VB/DOS, PDS 7.1 Libraries, C/C++/Pascal (Win).
* CB/ISAM has support for Pascal & Borland's
  DELPHI.
* No runtime royalties. You can ship our runtime
  DLL without limit.

MAIN FUNCTIONS:  
VmxCreate (FileName$, ..., RecordAndIndexFormat$)
Creates a new VB/ISAM file, establishing the
record format and index selection.  Record fields
may be any Visual Basic data type, including
variable-length strings, but not Variants.

VmxOpen (FileName$, ..., ReturnedFileNum%)
Opens a VB/ISAM file, returning a reference
number (or "handle").

VmxPut (FileNum%, ..., RecordVariable, ADD_ONLY
 / REPLACE_ONLY / EITHER)
Adds or changes a record.  RecordVariable is a
Visual Basic "Type/EndType" variable; its
components (named variables of any data type)
are the record fields.  The contents of whichever
string fields you had identified, in VmxCreate,
as index fields, are used to immediately update
the indexes.

VmxDelete (FileNum%, PrimaryIndexKey$)
Deletes a record.  The primary key is the unique
record identifier.  All indexes are updated.

VmxGet (FileNum%, Index%, Lookup, SearchString$,
 ..., RecordVariable)
Sets a pointer to the insertion point of your
SearchString$ in the specified index. If there's
a match, it also retrieves the corresponding
record into RecordVariable.

VmxGet (FileNum%, Index%, Next, ...
, RecordVariable)
Steps forward to the next entry in the specified
index and retrieves the corresponding record.
Further parameters allow for optional
loop-control assistance, by testing the
encountered index entry against a comparison
value, with a choice of Equals, Begins With,
Less Than, etc., and having the function return
"OK" only if the test succeeds.  After
appropriately initializing the index pointer
with VmxGet/Lookup, you can easily loop to
retrieve all Smiths, all part numbers beginning
with XYZ123, etc.

OTHER FUNCTIONS:  
VmxGet/Previous, VmxGet/Current: Similar to
 VmxGet/Next.
VmxBOF, VmxEOF: Go to the beginning/end of
 an index.
VmxClose, VmxKill: Close/delete a file.
 Also, VmxFlush performs a quick save-to-disk.
VmxEncode, VmxDecode: Convert between Type
 variables and variable-length strings; useful
 if you want to store "subrecords" of differing
 formats into your data records.
VmxWriteNote, VmxReadNote: Maintain an optional
 1,000-byte mini-database of named strings
 within a VB/ISAM file, for annotations, data
 version control, etc..
VmxInfo: Get file parameters and statistics.
VmxReturnCode: Translate the integer codes
 returned by the other functions into
 descriptive error messages, for convenience
 in debugging.  Examples:  0 = "OK",
 1 = "Not Found".

FREQUENTLY ASKED QUESTIONS:  
Is VB/ISAM the same as the ISAM that comes with
VB/DOS Professional Edition?  No; the term
"ISAM" is generic, standing for "Indexed
Sequential Access Method."  Although their
general functionality is similar, there are many
ISAMs. VB/ISAM is a trademark of Software Source.

How easy is it to integrate VB/ISAM into my VB
program?  Unlike some other DLL products,
VB/ISAM for Windows was designed specifically
as a convenient extension to the Visual Basic
programming language.  The product includes a
 .BAS file containing all function declarations,
symbolic constants for option parameters and
return codes, etc.  Just add this .BAS module
to your VB program, and then call the functions
as if they were a part of VB.

How sophisticated is VB/ISAM's indexing?  Each
of the index fields in your record (up to 80)
can be up to 250 bytes long.  You can easily
create multi-field indexes (for example,
LastName + FirstName).  You can make "sparse"
indexes, in which only selected records are
represented, by simply leaving fields empty
when you write a record.  VB/ISAM avoids
keyboard errors by normalizing index searches
for upper/lower case, leading/trailing spaces,
and multiple embedded spaces.  It keeps
separate pointers for each index, and moves
the pointers only with VmxGet and VmxBOF/ EOF
calls; you can add, change, and even delete
records without losing your place.

Can I have multiple VB/ISAM files open
simultaneously?  Yes; in fact, the user manual
describes how to use multiple VB/ISAM files
for relational data processing, with each file
serving as a "table."  Also, many applications
create temporary VB/ISAM files for quick ad-hoc
sorting; since there's a VmxGet option to
retrieve only a record's primary key, and since
small files containing only ad-hoc sort values
plus associated primary keys often remain in
memory cache, applications can be very fast.

VB3 and VB4 Note:
 Our 16-Bit, VB3 compatible versions of VB/ISAM
 work fine with Windows95, WindowsNT, Windows
 3.11, and Windows for WorkGroups 3.11.  The
 32-Bit, VB4 compatible version of VB/ISAM is
 available.  Previous 16-Bit versions of VB/ISAM
 are not compatible with VB4.  We are
 recommending to our customers who have purchased
 VB4 to install VB4 in a directory separate from
 VB3, so KEEP VB3 AND VB4 BOTH AVAILABLE FOR USE.
 Since Microsoft has announced no plans to
 support VB4 16-Bit beyond the current release,
 we suggest it might be more convenient to use
 VB4 for 32-Bit development only, saving the
 expense of rewriting VB3 16-Bit applications.

16-Bit VB/ISAM for VB4 (5/96),
32-Bit CB/ISAM (6/96) are not yet available.

Windows Magazine, August 1993,
Page 186.  REVIEWERS' NOTEBOOK:


FAST VISUAL BASIC DATA ACCESS
VB/ISAM IS A SET OF INCREDIBLY FAST database
functions for Visual Basic 1.0 and 2.0 [VB3
& VB4].  VB/ISAM (the last part is an acronym
for Indexed Sequential Access Method) lets you
access records by index lookup or sequentially,
by moving to the next or previous record.
Inexact searches, when no data is found, place
a pointer so that you need move only to the next
record to find the closest match.  The Update
Protection option lets you specify "add only" or
"replace only" during record writes.
The functions handle fixed and variable length
strings, fields, and keys, and records of any
length up to 64KB; you can mix different record
types in the same file.  VB/ISAM allows you to
include arrays of different numbers of elements
in your records.  It can manage up to 80 index
keys, each up to 250 bytes long, all
automatically maintained.  The functions
disregard uppercase lowercase differences: in
order to save space, all index keys are stored
in lowercase with spaces removed.
The DLL takes a minuscule 50KB for the multi-user
version, 47KB for the single user version.
Unlike most competing database add-on products
for VB, VB/ISAM does not use custom controls.
Instead, you use its set of functions to
manipulate records.  Fortunately, there are only
16 functions to learn (the multi-user version
also has two functions to handle file
[and record] locking and unlocking). There is no
database pack function because VB/ISAM keeps its
file space constantly organized.  The files have
their own format; the library is not meant to
support industry-standard dBASE or Paradox files.
The add-on comes with an excellent user's guide
that helps you plan your database, avoid
potential trouble spots, and use the functions
properly.  It's the first user's guide I've seen
for a programming product that uses humor well.
Although the sample application provided is
simple, it illustrates the major features: a
printed example would be a welcome addition.
For the price, the excellent and friendly
technical support, and a user's manual that tells
it like it is with a chuckle, you can't go wrong
with this well-designed and speedy add-on.
VB/ISAM
Price : $99.95; multi-user Version $169.95
Software Source
(408) 363-0985; fax (408) 363-0987
-James E. Powell


VB/ISAM New and Auxiliary Products

VB/ISAM 4032 for Windows (32-Bit for VB4)
represents a significant generalization of our
product line. Previous versions of VB/ISAM had
one DLL for development and another for runtime,
one DLL for single user and another for
multi-user, one DLL for interfacing with Visual
Basic and another for interface with C, C++,
Pascal, Delphi, or Power Basic. With VB/ISAM
4032, all these DLLs have been imploded into a
single DLL that serves all of these functions.

The VB/ISAM Tool Kit, or VTK, is a bundle of
tools for developer use. It includes the Data
Editor for editing a dataset, Vtool for
rebuilding a dataset, and Dskel for salvaging
data. The VTK costs much less than the
individual tools.

VTOOL is particularly useful for rebuilding
extremely large datasets.  Dremake  is included
with VB/ISAM to allow rebuilding of datasets
damaged by system failures.  For most situations
Dremake is sufficient.  However, when one of our
customers rebuilt a 400 MB dataset it took many
hours. With VTOOL, the same dataset was rebuilt
in 10% of that time.

The DATA EDITOR provides a convenient way of
accessing VB/ISAM datasets as defined by their
standard format strings. This can be helpful for
debugging, allowing you to verify what is in
each record. We also offer the source code to
the DATA EDITOR for $200. This permits a rapid
startup of your project by starting with an
already functioning application (the DATA EDITOR)
which can be  successively modified to include
required application features.

DSKEL allows validation of dataset integrity and
reclamation of data from datasets damaged by
system failures such as power outages. VB/ISAM
is designed to maximize dataset availability by
continuing to allow access to undamaged portions
of a dataset, even though another section of the
dataset may be damaged.  Ideally, DSKEL should
be used in conjunction with well designed backup
and recovery processes. Datasets should be
verified before being copied to backup, insuring
undamaged backup files. Techniques such as
transaction logging can be combined with backup
datasets for dataset reconstruction. DSKEL will
report dataset errors it finds. DSKEL can be
used to directly salvage information not
available from other sources.

FIELD PACK, a field manipulation tool, is now
available in a VB4 32-Bit version.  The 32-Bit
version is now included on the disk with the VB3
version. Read, write, insert, and remove
variable-length fields delimited by any sequence
of characters (not just a single character).
Pack and unpack any series of data items into
and out of variable-length strings.  Store
arrays of different numbers of elements into
database records.  Perform a variety of useful
string operations, including left, right, and
center justification with a choice of fill
character.

SOFTWARE SOURCE NOW HAS VB/ISAM
 AVAILABLE ON COMPUSERVE.
  To download VB/ISAM,
  GO MSBASIC, select keyword VB/ISAM.
  To purchase VB/ISAM, GO SWREG,
  select keyword VB/ISAM.
  To activate your license,
    call  Software Source (408)363-0985, or
    fax   Software Source (408)363-0987, or
    email Software Source 75443,134

FACTORY DIRECT PRICE LIST

VB/ISAM MU for Windows	$169.95
 (For Visual Basic Windows multi-user)
 (16 or 32 Bit for VB3 or VB4)

VB/ISAM MX for Windows  $ 99.95
 (For Visual Basic Windows single user)
 (16 or 32 Bit for VB3 or VB4)

CB/ISAM MU for Windows	$169.95
 (For C/C++/Pascal/Delphi Windows multi-user)

CB/ISAM MX for Windows  $ 99.95
 (For C/C++/Pascal/Delphi Windows single-user)

VB/ISAM MU for DOS	$169.95
 (For Visual Basic MS-DOS multi-user)

VB/ISAM MX for DOS      $ 99.95
 (For Visual Basic MS-DOS single-user)

Combo Pack Plus         $659.00
 (VB3 16-Bit MU and VB4 32-Bit MU
 and CB 16-Bit MU and DE+Dremake Sources +VTK with FP)

Combo Pack              $399.00
 (VB3 16-Bit MU and VB4 32-Bit MU        +VTK with FP)

Pro Pack Plus           $399.00
                        (VB MU and CB MU +VTK with FP)

Pro Pack                $299.00
                        (VB MU or CB MU  +VTK with FP)

VB/ISAM Tool Kit (VTK)	$129.00
                                      (DE+Vtool+Dskel)

Data Editor and Source	$200.00
                                 (Windows/VB3)

Dremake and Source	$100.00
                (DOS for all VB/ISAM datasets)

Data Editor             $ 79.00  (Windows/VB3)

Vtool Fast Rebuild      $  69.00 (Windows/VB3)

Dskel Data Salvage	$  59.00
             (VBDOS for all VB/ISAM Data sets)

FieldPack		$  49.00
                          (Windows/VB3+VB4 32)

PDS 7.1 Lib             $  25.00
                       (Needs VB/ISAM for DOS)

VB/ISAM extra manuals	$  20.00

16-Bit VB/ISAM for VB4 (5/96),
32-Bit CB/ISAM (6/96) are not yet available.

All products are runtime royalty-free.
All prices are in US. dollars. 
 
Invoice/list/retail prices:
Any MX (single-user) product:
 $129.95 (add shipping/handling).
Any MU (multi-user/network) product:
 $199.95 (add shipping/handling).

Factory-direct orders by VISA,
 MasterCard, AMEX, COD, or prepaid check:
 Foreign checks or money orders must be in
 US dollars drawn on a US bank.
$ 99.95 for any MX single user
 product add shipping/handling.
$169.95 for any MU multi-user/network
 product add shipping/handling.
 
Shipping/handling charges
(California add 7.25% tax, plus local tax):
US orders - 2-day priority mail $8.00,
 Compuserve $5 for DE, Vtool, Dskel, FP
 Foreign orders (airmail): $15.00.
 FedEx or COD: CALL.
	
compuserve: 75443,134
Internet: 75443.134@compuserve.com

Software Source
835 Blossom Hill Rd #210
San Jose, CA 95123-2703

Voice (408) 363-0985
Fax (408) 363-0987
United States of America
